# -*- coding: utf-8 -*-
from flask import Blueprint, request, jsonify
from flask import redirect

from common.libs.Helper import ops_render, iPagination, getCurrentDate
from common.libs.UrlManager import UrlManager
from common.models.member.Member import Member

route_member = Blueprint('member_page', __name__)
from application import app, db


# 列表页
@route_member.route("/index")
def index():
    resp_data = {}
    # 获取所有请求参数
    req = request.values
    # 获取前端传递的分页参数 默认1
    page = int(req['p']) if ('p' in req and req['p']) else 1
    query = Member.query

    if 'mix_kw' in req:
        # 模糊查询
        query = query.filter(Member.nickname.ilike("%{0}%".format(req['mix_kw'])))

    if 'status' in req and int(req['status']) > -1:
        query = query.filter(Member.status == int(req['status']))

    # 分页所需参数
    page_params = {
        'total': query.count(),  # 总数
        'page_size': app.config['PAGE_SIZE'],  # 当前每一页的大小是多少个
        'page': page,  # 当前是第几页
        'display': app.config['PAGE_DISPLAY'],
        'url': request.full_path.replace("&p={}".format(page), "")  # 拿到当前的page参数 替换为空

    }

    pages = iPagination(page_params)
    offset = (page - 1) * app.config['PAGE_SIZE']
    list = query.order_by(Member.id.desc()).offset(offset).limit(app.config['PAGE_SIZE']).all()
    resp_data['list'] = list  # 循环数据
    resp_data['pages'] = pages  # 分页数据
    resp_data['search_con'] = req  # 所有的查询字段 回填
    resp_data['status_mapping'] = app.config['STATUS_MAPPING']
    # 代表当前是哪个view 方便前端tab栏切换
    resp_data['current'] = 'index'
    return ops_render("member/index.html", resp_data)


# 详情页面
@route_member.route("/info")
def info():
    resp_data = {}
    req = request.args
    # 获取id 哪一个的详情
    id = int(req.get("id", 0))
    reback_url = UrlManager.buildUrl("/member/index")
    if id < 1:
        return redirect(reback_url)

    info = Member.query.filter_by(id=id).first()
    if not info:
        return redirect(reback_url)

    # pay_order_list = PayOrder.query.filter_by( member_id = id ).filter( PayOrder.status.in_( [-8,1] ) )\
    #     .order_by( PayOrder.id.desc() ).all()
    # comment_list = MemberComments.query.filter_by( member_id = id ).order_by( MemberComments.id.desc() ).all()

    resp_data['info'] = info
    # resp_data['pay_order_list'] = pay_order_list
    # resp_data['comment_list'] = comment_list
    resp_data['current'] = 'index'
    return ops_render("member/info.html", resp_data)


@route_member.route("/set", methods=["GET", "POST"])
def set():
    if request.method == "GET":
        resp_data = {}
        req = request.args
        # 取出id
        id = int(req.get("id", 0))
        reback_url = UrlManager.buildUrl("/member/index")
        if id < 1:
            return redirect(reback_url)

        info = Member.query.filter_by(id=id).first()
        if not info:
            return redirect(reback_url)

        if info.status != 1:
            return redirect(reback_url)

        resp_data['info'] = info
        resp_data['current'] = 'index'
        return ops_render("member/set.html", resp_data)
    #ajax操作
    resp = {'code': 200, 'msg': '操作成功~~', 'data': {}}
    req = request.values
    id = req['id'] if 'id' in req else 0
    nickname = req['nickname'] if 'nickname' in req else ''
    if nickname is None or len(nickname) < 1:
        resp['code'] = -1
        resp['msg'] = "请输入符合规范的姓名~~"
        return jsonify(resp)

    member_info = Member.query.filter_by(id=id).first()
    if not member_info:
        resp['code'] = -1
        resp['msg'] = "指定会员不存在~~"
        return jsonify(resp)

    member_info.nickname = nickname
    member_info.updated_time = getCurrentDate()
    db.session.add(member_info)
    db.session.commit()
    return jsonify(resp)


@route_member.route("/comment")
def comment():
    return ops_render("member/comment.html")


@route_member.route("/ops",methods=["POST"])
def ops():
    resp = { 'code':200,'msg':'操作成功~~','data':{} }
    req = request.values
    #取到id和执行的操作方式
    id = req['id'] if 'id' in req else 0
    act = req['act'] if 'act' in req else ''

    if not id :
        resp['code'] = -1
        resp['msg'] = "请选择要操作的账号~~"
        return jsonify(resp)

    if act not in [ 'remove','recover' ]:
        resp['code'] = -1
        resp['msg'] = "操作有误，请重试~~"
        return jsonify(resp)

    member_info = Member.query.filter_by( id = id ).first()
    if not member_info:
        resp['code'] = -1
        resp['msg'] = "指定会员不存在~~"
        return jsonify(resp)

    if act == "remove":
        member_info.status = 0
    elif act == "recover":
        member_info.status = 1

    member_info.updated_time = getCurrentDate()
    db.session.add(member_info)
    db.session.commit()
    return jsonify( resp )
